Method, apparatus and system for implementing external device simulating keyboard

ABSTRACT

A method, an apparatus and a system for implementing an external device simulating a keyboard relates to the field of electronic technology. The external device generates key-value data in a case that a user pressing a key is detected, and sends a start command to an Apple device after receiving a data request sent by the Apple device. After receiving the start command, the Apple device exits a soft keyboard and continuously sends the data request to the external device. After receiving the data request, the external device sends an attaching report command including the key-value data to the Apple device. The Apple device displays the key-value data and continuously sends the data request to the external device. After receiving the data request, the external device sends an end command to the Apple device. The Apple device pops up the soft keyboard again after receiving the end command.

This application is a National Stage of International Application No. PCT/CN2021/114604, filed Aug. 25, 2021, which claims priority to Chinese Patent Application No. 202011087524.0, filed to China National Intellectual Property Administration on Oct. 13, 2020, entitled “Method, Apparatus and System for Implementing External Device Simulating Keyboard”, both of which are hereby incorporated by reference in their entireties.

TECHNICAL FIELD

The present disclosure relates to the field of electronic technology, and more particularly, to a method, an apparatus and a system for implementing an external device simulating a keyboard.

BACKGROUND

In the prior art, an Apple device, which refers to a device using the iOS operating system, such as an iphone, an ipad, can be connect to an external keyboard for use. However, when the external keyboard communicates with the Apple device through a human interface device (HID) protocol, the soft keyboard of the Apple device will conflict with the external keyboard, which leads to that the soft keyboard of the Apple device cannot be used, which is very inconvenient for using.

SUMMARY

The purpose of the present disclosure is to provides a method, an apparatus and a system for implementing an external device simulating a keyboard in order to overcome deficiencies of the prior art.

The present disclosure provides a method for implementing an external device simulating a keyboard, and the method is applicable for an Apple device, the method includes:

-   step T1, establishing, by the external device, a connection with the     Apple device, waiting for receiving a data request continuously sent     by the Apple device, returning response data to the Apple device via     a universal serial bus (USB) interface in a case that the external     device receives the data request sent by the Apple device via the     USB interface and there is no data in a send cache of the external     device, and performing step T2 in a case that a user pressing a key     is detected in a process that the external device is waiting for     receiving the data request continuously sent by the Apple device; -   step T2, generating, by the external device, key-value data,     organizing a start command according to a preset HID identifier and     storing the start command in the send cache, and setting a sending     identifier as a first preset value; where the start command is used     for declaring that the external device is a keyboard device; -   step T3, in a case that the external device receives the data     request sent by the Apple device via the USB interface, determining,     by the external device, whether the sending identifier is the first     preset value; if yes, sending the start command in the send cache to     the Apple device via the USB interface and clearing the send cache,     waiting for receiving the data request continuously sent by the     Apple device, and performing step T4; otherwise, returning response     data to the Apple device via the USB interface; -   step T4, in a case that the external device detects that the send     cache is cleared, generating, according to the key-value data, an     attaching report command and storing the attaching report command in     the send cache, and setting the sending identifier as a second     preset value; -   step T5, in a case that the external device receives the data     request sent by the Apple device via the USB interface, determining,     by the external device, whether the sending identifier is the second     preset value; if yes, sending the attaching report command in the     send cache to the Apple device via the USB interface and clearing     the send cache, waiting for receiving the data request continuously     sent by the Apple device, and performing step T6; otherwise,     returning response data to the Apple device via the USB interface; -   step T6, in a case that the external device detects that the send     cache is cleared, organizing an end command and storing the end     command in the send cache, and setting the sending identifier as a     third preset value; -   step T7, in a case that the external device receives the data     request sent by the Apple device via the USB interface, determining     whether the sending identifier is the third preset value; if yes,     sending the end command in the send cache to the Apple device via     the USB interface and clearing the send cache and the sending     identifier, waiting for receiving the data request continuously sent     by the Apple device; otherwise, returning response data to the Apple     device via the USB interface.

Further, the step T1 includes: after the external device establishes a physical connection with the Apple device via a Lighting interface, performing hardware system initialization; receiving the data request continuously sent by the Apple device, and returning response data to the Apple device via the USB interface in a case that the external device receives the data request sent by the Apple device via the USB interface and there is no data in the send cache.

-   The step T1 further includes: storing, by the external device, a     detecting instruction in the send cache; -   between the step T1 and the step T2, the method further includes:     -   step Z1, in a case that the external device receives the data         request sent by the Apple device via the USB interface,         determining, by the external device, whether there is data in         the send cache; if yes, sending the detecting instruction in the         send cache to the Apple device via the USB interface and         receiving support authentication protocol information sent by         the Apple device, and negotiating synchronization packet data         with the Apple device; otherwise, returning, by the external         device, response data to the Apple device via the USB interface;         and;     -   step Z2, in a case that the external device receives         authentication success information and a device authentication         instruction sent by the Apple device via the USB interface,         organizing, by the external device, an authentication response         and storing the authentication response in the send cache, and         returning the authentication response in the send cache to the         Apple device via the USB interface.

Before the step Z2, the method further includes:

-   in a case that the external device receives a certificate     acquisition instruction sent by the Apple device via the USB     interface, reading, by the external device, a certificate from an     internal authentication chip and storing the certificate in the send     cache, and returning the certificate in the send cache to the Apple     device via the USB interface; and; -   in a case that the external device receives a challenge instruction     sent by the Apple device via the USB interface, parsing, by the     external device, the challenge instruction and sending a challenge     value obtained by parsing to the internal authentication chip,     reading a challenge value signature result from the internal     authentication chip and storing the challenge value signature result     in the send cache, and returning the challenge value signature     result in the send cache to the Apple device via the USB interface.

Further, the generating, according to the key-value data, an attaching report command and storing the attaching report command in the send cache in step T4 specifically is: converting the key-value data into key-pressing information, generating an attaching report command according to the key-pressing information and storing the attaching report command in the send cache.

The present disclosure further provides a method for implementing an external device simulating a keyboard, and the method is applicable for a system including an Apple device and an external device. The method includes:

-   step S1, an Apple device establishes a connection with an external     device, the Apple device continuously sends a data request to the     external device, in a case that the external device receives the     data request sent by the Apple device via a USB interface and there     is no data in a send cache of the external device, the external     device returns response data to the Apple device via the USB     interface; the Apple device authenticates the external device,     performs step S2 in a case that the authentication is successful,     and ends the procedure and reports error in a case that the     authentication fails; -   step S2, the Apple device prompts a user to press a key on the     external device; in a case that the user pressing a key is detected     in a process that the external device is waiting for receiving the     data request continuously sent by the Apple device, the external     device generates key-value data, organizes a start command according     to a preset HID identifier and stores the start command in the send     cache, sets a sending identifier as a first preset value, and     performs step S3; where the start command is used for declaring that     the external device is a keyboard device; -   step S3, in a case that the external device receives the data     request sent by the Apple device via the USB interface, the external     device determines whether the sending identifier is the first preset     value, if yes, the external device sends the start command in the     send cache to the Apple device via the USB interface and clears the     send cache, waits for receiving the data request continuously sent     by the Apple device; in a case that the external device detects that     the send cache is cleared, the external device generates an     attaching report command according to the key-value data and stores     the attaching report command in the send cache, sets the sending     identifier as a second preset value, and performs step S4;     otherwise, the external device returns response data to the Apple     device via the USB interface; -   step S4, the Apple device exits a soft keyboard after receiving the     start command, the Apple device continuously sends the data request     to the external device, and performs step S5; -   step S5, in a case that the external device receives the data     request sent by the Apple device via the USB interface, the external     device determines whether the sending identifier is a second preset     value, if yes, the external device sends the attaching report     command in the send cache to the Apple device via the USB interface     and clears the send cache, waits for receiving the data request     continuously sent by the Apple device; in a case that the external     device detects that the send cache is cleared, the external device     organizes an end command and stores the end command in the send     cache, sets the sending identifier as a third preset value, and     performs step S6; otherwise, the external device returns response     data to the Apple device via the USB interface; -   step S6, the Apple device displays the key-value data in the     attaching report command after receiving the attaching report     command, continuously sends the data request to the external device,     and performs step S7; -   step S7, in a case that the external device receives the data     request sent by the Apple device via the USB interface, the external     device determines whether the sending identifier is a third preset     value, if yes, the external device sends the end command in the send     cache to the Apple device via the USB interface and clears the send     cache and the sending identifier, waits for receiving the data     request sent by the Apple device; otherwise, the external device     returns response data to the Apple device via the USB interface; -   step S8, the Apple device pops up the soft keyboard again after     receiving the end command.

Further, in the step S1, before the Apple device authenticates the external device, the method further includes:

-   step E1, the Apple device detects whether it supports an     authentication protocol, if yes, the Apple device returns supporting     authentication protocol information to the external device and     performs step E2, otherwise, the Apple device reports error and ends     the procedure; -   step E2, the external device negotiates synchronization packet data     with the Apple device after receiving the authenticating protocol     information via the USB interface; -   in the step S1, after the Apple device authenticates the external     device successfully, the method further includes:     -   step F1, the Apple device sends a device authentication         instruction to the external device; after receiving the device         authentication instruction via the USB interface, the external         device organizes an authentication response and stores the         authentication response in the send cache; the external device         returns the authentication response in the send cache to the         Apple device via the USB interface, and performs step S2.

Further, after the Apple device establishes the connection with the external device, the method further includes: the external device stores a detecting instruction in the send cache;

-   the step E1 includes:     -   step E11, in a case that the external device receives the data         request sent by the Apple device via the USB interface, the         external device determines whether there is data in the send         cache, if yes, the external device sends the detect instruction         in the send cache to the Apple device; otherwise, the external         device reports error and ends the procedure;     -   step E12, after the Apple device receives the detecting         instruction, the Apple device determines whether it supports the         authentication protocol, if yes, the Apple device returns Apple         device supporting authentication protocol information to the         external device, and performs step E2; otherwise, the Apple         device reports error and ends the procedure.

Further, the step E12 specifically is: after the Apple device receives the detecting instruction, determines whether the protocol supported by itself includes the authentication protocol specified by the detecting instruction; if yes, the Apple device returns Apple device supporting authentication protocol information to the external device, and performs step E2; otherwise, the Apple device reports error and ends the procedure.

Further, in the step S1, the Apple device establishes a connection with the external device, and the Apple device continuously sends a data request to the external device, includes:

-   step S11, the Apple device establishes a physical connection with     the external device via a Lighting interface, and the external     device performs hardware system initialization; -   step S12, the Apple device performs USB enumeration, and     continuously sends a data request to the external device after the     USB enumeration is completed.

Further, in the step S1, the Apple device authenticates the external device, performs step S2 if the authentication is successful, and reports error and ends the procedure if the authentication fails, includes:

-   step A1, the Apple device sends a certificate acquisition     instruction to the external device; -   step A2, in a case that the external device receives the certificate     acquisition instruction sent by the Apple device via the USB     interface, the external device reads a certificate from an internal     authentication chip and stores the certificate in the send cache,     and returns the certificate in the send cache to the Apple device     via the USB interface; -   step A3, the Apple device authenticates the received certificate,     performs step A4 if the authentication is successful, and reports     error and ends the procedure if the authentication fails; -   step A4, the Apple device generates a challenge value, generates a     challenge instruction according to the challenge value and sends the     challenge instruction to the external device; -   step A5, in a case that the external device receives the challenge     instruction sent by the Apple device via the USB interface, the     external device parses the challenge instruction and sends the     challenge value obtained by parsing to the internal authentication     chip, reads a challenge value signature result from the internal     authentication chip and stores the challenge value signature result     in the send cache, and returns the challenge value signature result     in the send cache to the Apple device via the USB interface; -   step A6, the Apple device authenticates the received challenge value     signature result, sends authentication success information to the     external device in a case that the authentication is successful and     performs step S2, reports error and ends the procedure in a case     that the authentication fails; -   Further, the step A3 includes: the Apple device uses a stored public     key to decrypt a signature value in the certificate to obtain a     first decryption value, performs a hash operation on data to be     signed in the certificate to obtain a first hash value, determines     whether the first hash value is identical to the first decrypting     value, if yes, the authentication of the certificate is successful,     performs step A4; otherwise, the authentication fails, reports error     and ends the procedure.

Further, the step A6 includes: the Apple device uses a stored public key to decrypt the challenge value signature result to obtain a second decryption value, performs a second hash operation on the generated challenge value to obtain a second hash value, determines whether the second decrypting value is identical to the second hash value, if yes, the authentication is successful, sends authentication success information to the external device; otherwise, the authentication fails, reports error and ends the procedure.

Further, in the step S2, the Apple device prompts a user to press a key on the external device is replaced with: an application browser of the Apple device prompts the user to input a key-value data;

the step S6 is replaced with: the Apple device sends the key-value data in the attaching report command to the browser after receiving the attaching report command, the browser performs corresponding operation after receiving the key-value data; and the Apple device continues to send the data request to the external device.

Further, in the step S3, in a case that the external device detects that the send cache is cleared, the external device generates an attaching report command according to the key-value data and stores the attaching report command in the send cache specifically is: in a case that the external device detects that the send cache is cleared, the external device converts the key-value data into key-pressing information, generates an attaching report command according to the key-pressing information and stores the attaching report command in the send cache.

The present disclosure further provides an apparatus for implementing an external device simulating a keyboard; the apparatus is connected to an Apple device to work; the apparatus includes:

-   a connecting and receiving and returning module, configured to     implement a connection between the apparatus and the Apple device,     wait for receiving a data request continuously sent by the Apple     device, return response data to the Apple device via a USB interface     in a case that the apparatus receives the data request sent by the     Apple device via the USB interface and there is no data in a send     cache of the apparatus; -   a first detecting and organizing and storing module, configured to:     in a case that a user pressing a key is detected in a process that     the connecting and receiving and returning module is waiting for     receiving the data request continuously sent by the Apple device,     generate key-value data, organize a start command according to a     preset HID identifier and store the start command in the send cache,     and set a sending identifier as a first preset value; where the     start command is used for declaring that the apparatus is a keyboard     device; -   a first receiving and determining and sending module, configured to:     in a case that the data request sent by the Apple device is received     via the USB, determine whether the sending identifier is the first     preset value; if yes, send the start command in the send cache to     the Apple device via the USB interface and clear the send cache,     wait for receiving the data request continuously sent by the Apple     device, and trigger a detecting and generating and storing module;     otherwise, return response data to the Apple device via the USB     interface; -   the detecting and generating and storing module, configured to: in a     case that the send cache being cleared is detected, generate an     attaching report command according to the key-value data and store     the attaching report command in the send cache, and set the sending     identifier as a second preset value; -   a second receiving and determining and sending module, configured     to: in a case that the data request sent by the Apple device is     received via the USB interface, determine whether the sending     identifier is the second preset value; if yes, send the attaching     report command in the send cache to the Apple device via the USB     interface and clear the send cache, wait for receiving the data     request continuously sent by the Apple device, and trigger a second     detecting and organizing and storing module; otherwise, return     response data to the Apple device via the USB interface; -   the second detecting and organizing and storing module, configured     to: in a case that the send cache being cleared is detected,     organize an end command and store the end command in the send cache,     and set the sending identifier as a third preset value; and -   a third receiving and determining and sending module, configured to:     in a case that the data request sent by the Apple device is received     via the USB interface, determine whether the sending identifier is     the third preset value; if yes, send the end command in the send     cache to the Apple device via the USB interface and clear the send     cache and the sending identifier, wait for receiving the data     request continuously sent by the Apple device; otherwise, return     response data to the Apple device via the USB interface.

Further, the connecting and receiving and returning module is specifically configured to: perform hardware system initialization after establishing a physical connection with the Apple device via a Lighting interface; receive the data request continuously sent by the Apple device, and return response data to the Apple device via the USB interface in a case that the data request sent by the Apple device is received via the USB interface and there is no data in the send cache.

Further, the connecting and receiving and returning module is further configured to store a detecting instruction in the send cache;

the apparatus further includes:

-   a fourth receiving and determining and sending module, configured     to: in a case that the data request sent by the Apple device is     received via the USB interface, determine whether there is data in     the send cache; if yes, send the detecting instruction in the send     cache to the Apple device via the USB interface and receive support     authentication protocol information sent by the Apple device,     negotiate synchronization packet data with the Apple device;     otherwise, return response data to the Apple device via the USB     interface; and -   a receiving and organizing and sending module, configured to: in a     case that authentication success information and a device     authentication instruction sent by the Apple device are received via     the USB interface, organize an authentication response and store the     authentication response in the send cache, and return the     authentication response in the send cache to the Apple device via     the USB interface.

Further, the apparatus further includes:

-   a receiving and reading and sending module, configured to: in a case     that a certificate acquisition instruction sent by the Apple device     is received via the USB interface, read a certificate from an     internal authentication chip and store the certificate in the send     cache, and return the certificate in the send cache to the Apple     device via the USB interface; and -   a parsing and reading and sending module, configured to: in a case     that a challenge instruction sent by the Apple device is received     via the USB interface, parse the challenge instruction and send a     challenge value obtained by parsing to the internal authentication     chip, read a challenge value signature result from the internal     authentication chip and store the challenge value signature result     in the send cache, and return the challenge value signature result     in the send cache to the Apple device via the USB interface.

Further, the detecting and generating and storing module is specifically configured to: in a case that the send cache being cleared is detected, convert the key-value data into key-pressing information, generate an attaching report command according to the key-pressing information and store the attaching report command in the send cache.

The present disclosure further provides a system for implementing an external device simulating a keyboard. The system includes an Apple device and an external device; the Apple device includes: a connecting and sending module, an authenticating module, a prompting module, a receiving and exiting and sending module, a receiving and displaying and sending module and a receiving and re-popping module; the external device includes: a first receiving and returning module, a first detecting and organizing and storing module, a first receiving and determining and sending module, a detecting and generating and storing module, a second receiving and determining and sending module, a second detecting and organizing and storing module and a third receiving and determining and sending module;

-   the connecting and sending module is configured to implement that     the Apple device is connected with the external device and     continuously sends a data request to the external device; -   the first receiving and returning module is configured to return     response data to the Apple device via a USB interface in a case that     the data request sent by the Apple device is received via the USB     interface and there is no data in the send cache; -   the authenticating module is configured to authenticate the external     device; trigger the prompting module in a case that the     authentication is successful; and report error and end the procedure     in a case that the authentication fails; -   the prompting module is configured to prompt a user to press a key     on the external device; -   the first detecting and organizing and storing module is configured     to: in a case that the user pressing a key is detected, generate     key-value data, organize a start command according to a preset HID     identifier and store the start command in the send cache, set a     sending identifier as a first preset value, and trigger the first     receiving and determining and sending module; where the start     command is used for declaring that the external device is a keyboard     device; -   the first receiving and determining and sending module is configured     to: in a case that the data request sent by the Apple device is     received via the USB interface, determine whether the sending     identifier is the first preset value, if yes, send the start command     in the send cache to the Apple device via the USB interface and     clear the send cache, wait for receiving the data request     continuously sent by the Apple device, and trigger the detecting and     generating and storing module; otherwise, return response data to     the Apple device via the USB interface; -   the detecting and generating and storing module is configured to: in     a case that the send cache being cleared is detected, generate an     attaching report command according to the key-value data and store     the attaching report command in the send cache, and set the sending     identifier as a second preset value; -   the receiving and exiting and sending module is configured to exit a     soft keyboard after receiving the start command, send the data     request to the external device, and trigger the second receiving and     determining and sending module; -   the second receiving and determining and sending module is     configured to: in a case that the data request sent by the Apple     device is received via the USB interface, determine whether the     sending identifier is a second preset value, if yes, send the     attaching report command in the send cache to the Apple device via     the USB interface and clear the send cache, wait for receiving the     data request continuously sent by the Apple device, and trigger the     second detecting and organizing and storing module; otherwise,     return response data to the Apple device via the USB interface; -   the second detecting and organizing and storing module is configured     to: in a case that the send cache being cleared is detected,     organize an end command and store the end command in the send cache,     and set the sending identifier as a third preset value; -   the receiving and displaying and sending module is configured to     display the key-value data in the attaching report command after     receiving the attaching report command, continuously send the data     request to the external device, and trigger the third receiving and     determining and sending module; -   the third receiving and determining and sending module is configured     to: in a case that the data request sent by the Apple device is     received via the USB interface, determine whether the sending     identifier is a third preset value, if yes, send the end command in     the send cache to the Apple device via the USB interface and clear     the send cache and the sending identifier, wait for receiving the     data request sent by the Apple device; otherwise, return response     data to the Apple device via the USB interface; -   the receiving and re-popping module is configured to pop up the soft     keyboard again after receiving the end command.

Further, the Apple device further includes a detecting and returning module and a first sending module, and the external device further includes a receiving and negotiating module and a receiving and organizing and storing module;

-   the detecting and returning module is configured to detect whether     it supports an authentication protocol, if yes, return supporting     authentication protocol information to the external device,     otherwise, report error and end the procedure; -   the receiving and negotiating module is configured to negotiate     synchronization packet data with the Apple device after receiving     the authenticating protocol information via the USB interface; -   the first sending module is configured to send a device     authentication instruction to the external device after the     authenticating module authenticates the external device     successfully; -   the receiving and organizing and storing module is configured to:     after receiving the device authentication instruction via the USB     interface, organize an authentication response and store the     authentication response in the send cache; return the authentication     response in the send cache to the Apple device via the USB     interface; -   the prompting module is specifically configured to prompt a user to     press a key on the external device in a case that the authentication     response is received.

Further, the external device further includes:

-   a first storing module, configured to store a detecting instruction     in the send cache after the Apple device establishes the connection     with the external device; -   the detecting and returning module is specifically configured to: in     a case that the data request sent by the Apple device is received     via the USB interface, determine whether there is data in the send     cache, if yes, send the detect instruction in the send cache to the     Apple device; otherwise, report error and end the procedure; -   the Apple device further includes: a fourth receiving and     determining and returning module, configured to: after receiving the     detecting instruction, determine whether it supports the     authentication protocol, if yes, return Apple device supporting     authentication protocol information to the external device, and     trigger the receiving and negotiating module; otherwise, report     error and end the procedure.

Further, the fourth receiving and determining and returning module is specifically configured to: after receiving the detecting instruction, determine whether the protocol supported by itself includes the authentication protocol specified by the detecting instruction; if yes, return Apple device supporting authentication protocol information to the external device, and trigger the receiving and negotiating module; otherwise, report error and end the procedure.

Further, the connecting and sending module includes:

-   a connecting and initializing unit, configured to establishes a     physical connection with the external device via a Lighting     interface, where the external device performs hardware system     initialization; and -   an enumerating and sending unit, configured to perform USB     enumeration, and continuously send a data request to the external     device after the USB enumeration is completed.

Further, the authenticating module includes: a first sending unit, a first receiving and authenticating unit, a generating and sending unit and a second receiving and authenticating unit; the external device further includes: a receiving and reading and sending module and a parsing and reading and sending module;

-   the first sending unit is configured to send a certificate     acquisition instruction to the external device; -   the receiving and reading and sending module is configured to: in a     case that the certificate acquisition instruction sent by the Apple     device is received via the USB interface, read a certificate from an     internal authentication chip and store the certificate in the send     cache, and return the certificate in the send cache to the Apple     device via the USB interface; -   the first receiving and authenticating unit is configured to receive     and authenticate the certificate; trigger the generating and sending     unit in a case that the authentication is successful; and report     error and end the procedure in a case that the authentication fails; -   the generating and sending unit is configured to generate a     challenge value, generate a challenge instruction according to the     challenge value and send the challenge instruction to the external     device; -   the parsing and reading and sending module is configured to: in a     case that the challenge instruction sent by the Apple device is     received via the USB interface, parse the challenge instruction and     send the challenge value obtained by parsing to the internal     authentication chip, read a challenge value signature result from     the internal authentication chip and store the challenge value     signature result in the send cache, and return the challenge value     signature result in the send cache to the Apple device via the USB     interface; -   the second receiving and authenticating unit is configured to     receive and authenticate the challenge value signature result, send     authentication success information to the external device in a case     that the authentication is successful, and report error and end the     procedure in a case that the authentication fails.

Further, the first receiving and authenticating unit is specifically configured to use a stored public key to decrypt a signature value in the certificate to obtain a first decrypting value, perform a hash operation on data to be signed in the certificate to obtain a first hash value, determine whether the first hash value is identical to the first decrypting value; if yes, the authentication is successful, trigger the generating and sending unit; otherwise, the authentication fails, report error and end the procedure.

Further, the second receiving and authenticating unit is specifically configured to receive the challenge value signature result, use a stored public key to decrypt the challenge value signature result to obtain a second decrypting value, perform a hash operation on the generated challenge value to obtain a second hash value, determine whether the second decrypting value is identical to the second hash value; if yes, the authentication is successful, send authentication success information to the external device; otherwise, the authenticating fails, report error and end the procedure.

Further, the prompting module is further configured to prompt a user to input key-value data via an application browser of the Apple device;

the receiving and displaying and sending module is further configured to send the key-value data in the attaching report command to the browser after receiving the attaching report command; the browser performs corresponding operation after receiving the key-value data; the receiving and displaying and sending module is further configured to continue to send the data request to the external device.

Further, the detecting and generating and storing module is specifically configured to: in a case that the external device detects that the send cache is cleared, convert the key-value data into key-pressing information, generate an attaching report command according to the key-pressing information and store the attaching report command in the send cache.

Comparing with the prior art, the present disclosure has following advantages:

through the technical solutions of the present disclosure, when an external device is connected with an Apple device, the external device can simulate a keyboard and an Apple soft keyboard can be used normally as well, which reduces the conflict between the soft keyboard of the Apple device and the keyboard simulated by the external device, and reduces the burden of the Apple device, which is convenient for using by a user.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a flowchart of a method for implementing an external device simulating a keyboard according to Embodiment 1 of the present disclosure;

FIG. 2 is a flowchart of a method for implementing an external device simulating a keyboard according to Embodiment 2 of the present disclosure;

FIG. 3 is a flowchart of a method for implementing an external device simulating a keyboard according to Embodiment 3 of the present disclosure;

FIG. 4 is a block diagram of an apparatus for implementing an external device simulating a keyboard according to Embodiment 4 of the present disclosure; and

FIG. 5 is a schematic diagram of a system for implementing an external device simulating a keyboard according to Embodiment 5 of the present disclosure.

DETAILED DESCRIPTION OF THE EMBODIMENTS

The technical solutions in the embodiments of the present disclosure will be clearly and completely described in the following with reference to the accompanying drawings in the embodiments of the present disclosure. It is obvious that the described embodiments are only a part of the embodiments of the present disclosure, but not all embodiments. All other embodiments obtained by those skilled in the art based on the embodiments of the present disclosure without inventive efforts are within the scope of the present disclosure.

In the embodiment, after the Apple device establishes a connection for communication with the external device and completes an enumeration, the Apple device will continuously send a data request to the external device when it is idle. In a case that the external device receives the data request via a USB interface and there is no data in a send cache of the external device, the external device returns a confirmation response to the Apple device via the USB interface, and in a case that the external device has an instruction to send to the Apple device, the external device sends a corresponding instruction to the Apple device via the USB interface. For example, the external device in the embodiment may be a device with a one time password (OTP) function.

Embodiment 1

Embodiment 1 of the present disclosure provides a method for implementing an external device simulating a keyboard and the method is applicable for an Apple device. As shown in FIG. 1 , the method includes the following steps.

Step T1, an external device establishes a connection with the Apple device, waits for and receives a data request continuously sent by the Apple device, returns response data to the Apple device in a case that the external device receives the data request sent by the Apple device and there is no data in a send cache of the external device, and performs step T2 in a case that a user pressing a key is detected in a process that the external device is waiting for receiving the data request continuously sent by the Apple device.

Specifically, in the embodiment, the step T1 includes: after the external device establishes a physical connection with the Apple device via a Lighting interface, the external device performs hardware system initialization; receives the data request continuously sent by the Apple device, and returns response data to the Apple device via the USB interface in a case that the external device receives the data request sent by the Apple device via the USB interface and there is no data in the send cache.

Step T2, the external device generates key-value data, organizes a start command according to a preset HID identifier and stores the start command in the send cache, and sets a sending identifier as a first preset value.

The start command in the embodiment is used for declaring that the external device is a keyboard device; the preset HID identifier includes a HID identification code and a HID report descriptor.

Step T3, in a case that the external device receives the data request sent by the Apple device via the USB interface, the external device determines whether the sending identifier is the first preset value; if yes, sends the start command in the send cache to the Apple device via the USB interface and clears the send cache, waits for receiving the data request continuously sent by the Apple device, and performs step T4; otherwise, returns response data to the Apple device via the USB interface.

Step T4, in a case that the external device detects that the send cache is cleared, the external device generates an attaching report command according to the key-value data and stores the attaching report command in the send cache, and sets the sending identifier as a second preset value.

Specifically, in the embodiment, the generating an attaching report command according to the key-value data and storing the attaching report command in the send cache in step T4 specifically is: converting the key-value data into key-pressing information, generating an attaching report command according to the key-pressing information and storing the attaching report command in the send cache.

Step T5, in a case that the external device receives the data request sent by the Apple device via the USB interface, the external device determines whether the sending identifier is the second preset value; if yes, sends the attaching report command in the send cache to the Apple device via the USB interface and clears the send cache, waits for receiving the data request continuously sent by the Apple device, and performs step T6; otherwise, returns response data to the Apple device via the USB interface.

Step T6, in a case that the send cache being cleared is detected, the external device organizes an end command and stores the end command in the send cache, and sets the sending identifier as a third preset value.

Step T7, in a case that the external device receives the data request sent by the Apple device via the USB interface, the external device determines whether the sending identifier is the third preset value; if yes, sends the end command in the send cache to the Apple device via the USB interface and clears the send cache and the sending identifier, waits for receiving the data request continuously sent by the Apple device; otherwise, returns response data to the Apple device via the USB interface.

Optionally, the step T1 in the embodiment further includes: the external device stores a detecting instruction in the send cache; and between step T1 and step T2, the method further includes:

-   step Z1, in a case that the external device receives the data     request sent by the Apple device via the USB interface, the external     device determines whether there is data in the send cache; if yes,     sends the detecting instruction in the send cache to the Apple     device via the USB interface and receives support authentication     protocol information sent by the Apple device, and negotiates     synchronization packet data with the Apple device; otherwise,     returns response data to the Apple device via the USB interface; and -   step Z2, in a case that the external device receives authentication     success information and a device authentication instruction sent by     the Apple device via the USB interface, the external device     organizes an authentication response and stores the authentication     response in the send cache, and returns the authentication response     in the send cache to the Apple device via the USB interface.

In the embodiment, before the step Z2, the method further includes:

-   in a case that the external device receives a certificate     acquisition instruction sent by the Apple device via the USB     interface, the external device reads a certificate from an internal     authentication chip and stores the certificate in the send cache,     and returns the certificate in the send cache to the Apple device     via the USB interface; and -   in a case that the external device receives a challenge instruction     sent by the Apple device via the USB interface, the external device     parses the challenge instruction and sends a challenge value     obtained by parsing to the internal authentication chip, reads a     challenge value signature result from the internal authentication     chip and stores the challenge value signature result in the send     cache, and returns the challenge value signature result in the send     cache to the Apple device via the USB interface.

In the embodiment, in a case that the send cache being cleared is detected when the external device receives the data request sent by the Apple device via the USB interface, the external device returns response data to the Apple device via the USB interface.

Embodiment 2

Embodiment 2 of the present disclosure provides a method for implementing an external device simulating a keyboard, the method of the embodiment is applicable for a system including an Apple device and an external device. As shown in FIG. 2 , the method of the embodiment includes the following steps.

Step S1, an Apple device establishes a connection with an external device, the Apple device continuously sends a data request to the external device, in a case that a USB interface of the external device receives the data request sent by the Apple device and there is no data in a send cache of the external device, the USB interface of the external device returns response data to the Apple device; the Apple device authenticates the external device, performs step S2 in a case that the authentication is successful, and reports error and ends the procedure in a case that the authentication fails.

In the embodiment, the Apple device establishes a connection for communication with the external device, the Apple device continuously sends data request to the external device, includes:

-   step S11, the Apple device establishes a physical connection with     the external device via a Lighting interface, and the external     device performs hardware system initialization; -   step S12, the Apple device performs USB enumeration, and     continuously sends a data request to the external device after the     USB enumeration is completed.

In the above step, the Apple device authenticates the external device, performs step S2 if the authentication is successful, and reports error and ends the procedure if the authentication fails, includes the following steps.

-   Step A1, the Apple device sends a certificate acquisition     instruction to the external device; -   Step A2, in a case that the external device receives the certificate     acquisition instruction sent by the Apple device via the USB     interface, the external device reads a certificate from an internal     authentication chip and stores the certificate in the send cache,     and returns the certificate in the send cache to the Apple device     via the USB interface.

Step A3, the Apple device authenticates the received certificate, performs step A4 if the authentication is successful, and reports error and ends the procedure if the authentication fails.

Further, the step A3 includes: the Apple device uses a stored public key to decrypt a signature value in the certificate to obtain a first decryption value, performs a hash operation on data to be signed in the certificate to obtain a first hash value, determines whether the first hash value is identical to the first decrypting value, if yes, the authentication of the certificate is successful, performs step A4; otherwise, the authentication fails, reports error and ends the procedure.

Step A4, the Apple device generates a challenge value, generates a challenge instruction according to the challenge value and sends the challenge instruction to the external device.

Step A5, in a case that the external device receives the challenge instruction sent by the Apple device via the USB interface, the external device parses the challenge instruction and sends the challenge value obtained by parsing to the internal authentication chip, reads a challenge value signature result from the internal authentication chip and stores the challenge value signature result in the send cache, and returns the challenge value signature result in the send cache to the Apple device via the USB interface.

Step A6, the Apple device authenticates the received challenge value signature result, sends authentication success information to the external device in a case that the authentication is successful, reports error and ends the procedure in a case that the authentication fails.

Further, the step A6 includes: the Apple device uses a stored public key to decrypt the challenge value signature result to obtain a second decryption value, performs a hash operation on the generated challenge value to obtain a second hash value, determines whether the second decrypting value is identical to the second hash value, if yes, the authentication is successful, sends authentication success information to the external device; otherwise, the authentication fails, reports error and ends the procedure.

Step S2, the Apple device prompts a user to press a key on the external device; in a case that the user pressing a key is detected in a process that the external device is waiting for receiving the data request continuously sent by the Apple device, the external device generates key-value data, organizes a start command according to a preset HID identifier and stores the start command in the send cache, sets a sending identifier as a first preset value.

The start command in the embodiment is used for declaring that the external device is a keyboard device, and the preset HID identifier includes a HID identification code and a HID report descriptor.

Step S3, in a case that the external device receives the data request sent by the Apple device via the USB interface, the external device determines whether the sending identifier is the first preset value, if yes, the external device sends the start command in the send cache to the Apple device via the USB interface and clears the send cache, waits for receiving the data request continuously sent by the Apple device; in a case that the external device detects that the send cache is cleared, the external device generates an attaching report command according to the key-value data and stores the attaching report command in the send cache, sets the sending identifier as a second preset value, and performs step S4; otherwise, the external device returns response data to the Apple device via the USB interface.

In the embodiment, the generating an attaching report command according to the key-value data and stores the attaching report command in the send cache in step S3 specifically is: converting the key-value data into key-pressing information, generating an attaching report command according to the key-pressing information and storing the attaching report command in the send cache.

Step S4, the Apple device exits a soft keyboard after receiving the start command, the Apple device continuously sends the data request to the external device, and performs step S5.

Step S5, in a case that the external device receives the data request sent by the Apple device via the USB interface, the external device determines whether the sending identifier is a second preset value, if yes, the external device sends the attaching report command in the send cache to the Apple device via the USB interface and clears the send cache, waits for receiving the data request continuously sent by the Apple device; in a case that the external device detects that the send cache is cleared, the external device organizes an end command and stores the end command in the send cache, sets the sending identifier as a third preset value, and performs step S6; otherwise, the external device returns response data to the Apple device via the USB interface.

Step S6, the Apple device displays the key-value data in the attaching report command after receiving the attaching report command, continuously sends the data request to the external device, and performs step S7.

Step S7, in a case that the external device receives the data request sent by the Apple device via the USB interface, the external device determines whether the sending identifier is a third preset value, if yes, the external device sends the end command in the send cache to the Apple device via the USB interface and clears the send cache and the sending identifier, waits for receiving the data request sent by the Apple device; otherwise, the external device returns response data to the Apple device via the USB interface.

Step S8, the Apple device pops up the soft keyboard again after receiving the end command.

Optionally, in the step S1 of the embodiment, before the Apple device authenticates the external device, the method further includes the following steps.

Step E1, the Apple device detects whether it supports an authentication protocol, if yes, the Apple device returns supporting authentication protocol information to the external device and performs step E2, otherwise, the Apple device reports error and ends the procedure.

Further, after the Apple device establishes the connection with the external device, the method further includes: the external device stores a detecting instruction in the send cache; correspondingly, the step E1 includes:

-   step E11, in a case that the external device receives the data     request sent by the Apple device via the USB interface, the external     device determines whether there is data in the send cache, if yes,     the external device sends the detect instruction in the send cache     to the Apple device; otherwise, the external device reports error     and ends the procedure; -   step E12, after the Apple device receives the detecting instruction,     the Apple device determines whether it supports the authentication     protocol, if yes, the Apple device returns Apple device supporting     authentication protocol information to the external device, and     performs step E2; otherwise, the Apple device reports error and ends     the procedure.

The step E12 specifically is: after the Apple device receives the detecting instruction, determines whether the protocol supported by itself includes the authentication protocol specified by the detecting instruction; if yes, the Apple device returns Apple device supporting authentication protocol information to the external device, and performs step E2; otherwise, the Apple device reports error and ends the procedure. Optionally, the reporting error in this step may be: returning information that the Apple device does not support the authentication protocol.

Step E2, the external device negotiates synchronization packet data with the Apple device after receiving the authenticating protocol information via the USB interface.

In the step S1, after the Apple device authenticates the external device successfully, the method further includes:

-   step F1, the Apple device sends a device authentication instruction     to the external device; after receiving the device authentication     instruction via the USB interface, the external device organizes an     authentication response and stores the authentication response in     the send cache; the external device returns the authentication     response in the send cache to the Apple device via the USB     interface, and performs step S2. -   Optionally, the step S2 in the embodiment is replaced with: an     application browser of the Apple device prompts the user to input a     key-value data; in a case that the user pressing a key is detected     in a process that the external device is waiting for receiving the     data request continuously sent by the Apple device, the external     device generates key-value data, organizes a start command according     to a preset HID identifier and stores the start command in the send     cache, sets a sending identifier as a first preset value, and     performs step S3.

Correspondingly, the step S6 is replaced with: the Apple device sends the key-value data in the attaching report command to the browser after receiving the attaching report command, the browser performs corresponding operation after receiving the key-value data; and the Apple device continues to send the data request to the external device.

In the embodiment, in a case that the send cache being cleared is detected when the external device receives the data request sent by the Apple device via the USB interface, the external device returns response data to the Apple device via the USB interface.

In the embodiment, when the Apple device receives the response data returned by the external device, the Apple device continuously sends data request to the external device.

Embodiment 3

Embodiment 3 of the present disclosure provides a method for implementing an external device simulating a keyboard. As shown in FIG. 3 , the method includes the following steps.

Step 101, an Apple device establishes a physical connection with an external device via a Lighting interface; the external device performs hardware system initialization.

Step 102, the Apple device performs USB enumeration, and continuously sends a data request to the external device after the USB enumeration is completed.

Step 103, the external device sends a detecting instruction to the Apple device.

For example, the detecting instruction in the Embodiment is: 0×FF,0×55,0×02,0×00,0×EE,0×10;

Step 104, after the Apple device receives the detecting instruction, the Apple device determines whether it supports the authentication protocol, if yes, the Apple device returns Apple device supporting authentication protocol information to the external device, and performs step 105; otherwise, the Apple device reports error and ends the procedure.

In the embodiment, the step 104 specifically is: after the Apple device receives the detecting instruction, determines whether the protocol supported by itself includes the authentication protocol specified by the detecting instruction; if yes, the Apple device returns Apple device supporting authentication protocol information to the external device, and performs step 104; otherwise, the Apple device reports error and ends the procedure. For example, the reporting error in this step is: the Apple device returns information that the Apple device does not support the authentication protocol to the external device; the authentication protocol may be IAP2;

The Apple device supporting authentication protocol information that the Apple device returns to the external device is: 0×FF,0×55,0×02,0×00,0×EE,0×10.

The information that the Apple device does not support the authentication protocol that the Apple device returns to the external device is: 0×55,0×04,0×00,0×02,0×04,0×EE,0×08 or 0×55,0×02,0×00,0×00,0×FE or 0×FF,0×55,0×04,0×00,0×02,0×04,0×EE,0×08 or 0×FF,0×55,0×02,0×00,0×00,0×FE.

Step 105, the external device negotiates synchronization packet data with the Apple device.

Specifically, in the embodiment, the external device sends a negotiating data request to the Apple device, and the Apple device returns negotiating data to the external device.

The negotiating data request sent by the external device to the Apple device is: 0×FF,0×5A,0×00,0×1Ax,0×80,0×1C,0×00,0×00,0×F1,0×01,0×01,0×04,0×80,0×03,0×E8,0×00,0 ×0A,0×1E,0×01,0×01,0×00,0×01,0×02,0×02,0×01,0×5F.

The negotiating data sent by the Apple device to the external device is: 0×FF,0×5A,0×00,0×1A,0×C0,0×E7,0×1C,0×00,0×CA,0×01,0×7F,0×FF,0×FF,0×03,0×E8,0×00, 0×0A,0×1E,0×01,0×01,0×00,0×01,0×02,0×02,0×01,0×67.

Step 106, the Apple device authenticates the external device, performs step 107 if the authentication is successful; reports error and ends procedure if the authentication fails.

Specifically, in the embodiment, the step 106 includes the following steps.

Step 106-1, the Apple device sends a certificate acquisition instruction to the external device.

For example, the certificate acquisition instruction in the embodiment is: 0×FF,0×5A,0×00,0×10,0×40,0×E8,0×1C,0×01,0×52,0×40,0×40,0×00,0×06,0×AA,0×00,0×D0.

Step 106-2, after receiving the certificate acquisition instruction via the USB interface, the external device reads a certificate from an internal authentication chip and returns certificate response data including the certificate to the Apple device via the USB interface.

For example, the certificate response data in the embodiment is: 0×FF,0×5A,0×03,0×A0,0×40,0×1D,0×E8,0×01,0×BE,0×40,0×40,0×03,0×96,0×AA,0×01,0×03, 0×90,0×00,0×00,0×30,0×82,0×03,0×88,0×06,0×09,0×2A,0×86,0×48,0×86,0×F7,0×0D,0×01,0× 07,0×02,0×A0,0×82,0×03,0×79,0×30,0×82,0×03,0×75,0×02,0×01,0×01,0×31,0×00,0×30,0×0B, 0×06,0×09,0×2A,0×86,0×48,0×86,0×F7,0×0D,0×01,0×07,0×01,0×A0,0×82,0×03,0×5D,0×30,0 ×82,0×03,0×59,0×30,0×82,0×02,0×41,0×A0,0×03,0×02,0×01,0×02,0×02,0×0F,0×22,0×22,0×A A,0×16,0×03,0×17,0×AA,0×06,0×AA,0×91,0×92,0×AA,0×13,0×79,0×06,0×30,0×0D,0×06,0×0 9,0×2A,0×86,0×48,0×86,0×F7,0×0D,0×01,0×01,0×05,0×05,0×00,0×30,0×81,0×83,0×31,0×0B, 0×30,0×09,0×06,0×03,0×55,0×04,0×06,0×13,0×02,0×55,0×53,0×31,0×13,0×30,0×11,0×06,0×0 3,0×55,0×04,0×0A,0×13,0×0A,0×41,0×70,0×70,0×6C,0×65,0×20,0×49,0×6E,0×63,0×2E,0×31, 0×26,0×30,0×24,0×06,0×03,0×55,0×04,0×0B,0×13,0×1D,0×41,0×70,×70,0×6C,0×65,0×20,0× 43,0×65,0×72,0×74,0×69,0×66,0×69,0×63,0×61,0×74,0×69,0×6F,0×6E,0×20,0×41,0×75,0×74, 0×68,0×6F,0×72,0×69,0×74,0×79,0×31,0×37,0×30,0×35,0×06,0×03,0×55,0×04,0×03,0×13,0×2 E,0×41,0×70,0×70,0×6C,0×65,0×20,0×69,0×50,0×6F,0×64,0×20,0×41,0×63,0×63,0×65,0×73,0 ×73,0×6F,0×72,0×69,0×65,0×73,0×20,0×43,0×65,0×72,0×74,0×69,0×66,0×69,0×63,0×61,0×74, 0×69,0×6F,0×6E,0×20,0×41,0×75,0×74,0×68,0×6F,0×72,0×69,0×74,0×79,0×30,0×1E,0×17,0×0 D,0×31,0×36,0×30,0×33,0×31,0×38,0×31,0×33,0×35,0×32,0×35,0×38,0×5A,0×17,0×0D,0×32, 0×32,0×30,0×32,0×31,0×34,0×32,0×32,0×31,0×38,0×30,0×38,0×5A,0×30,0×70,0×31,0×0B,0× 30,0×09,0×06,0×03,0×55,0×04,0×06,0×13,0×02,0×55,0×53,0×31,0×13,0×30,0×11,0×06,0×03,0 ×55,0×04,0×0A,0×0C,0×0A,0×41,0×70,0×70,0×6C,0×65,0×20,0×49,0×6E,0×63,0×2E,0×31,0× 1F,0×30,0×1D,0×06,0×03,0×55,0×04,0×0B,0×0C,0×16,0×41,0×70,0×70,0×6C,0×65,0×20,0×69,0×50,0×6F,0×64,0×20,0×41,0×63,×63,0×65,0×73,0×73,0×6F,0×72,0×69,0×65,0×73,0×31,0×2B,0×30,0×29,0×06,0×03,0×55,0×04,0×03,0×0C,0×22,0×49,0×50,0×41,0×5F,0×32,0×32,0×32,0 ×32,0×41,0×41,0×31,0×36,0×30,0×33,0×31,0×37,0×41,0×41,0×30,0×36,0×41,0×41,0×39,0×31, 0×39,0×32,0×41,0×41,0×31,0×33,0×37,0×39,0×30,0×36,0×30,0×81,0×9F,0×30,0×0D,0×06,0×0 9,0×2A,0×86,0×48,0×86,0×F7,0×0D,0×01,0×01,0×01,0×05,0×00,0×03,0×81,0×8D,0×00,0×30, 0×81,0×89,0×02,0×81,0×81,0×00,0×90,0×27,0×5E,0×B3,0×05,0×F9,0×D3,0×11,0×C6,0×92,0× 4A,0×AF,0×49,0×1B,0×33,0×33,0×21,0×84,0×28,0×54,0×95,0×69,0×8C,0×D9,0×FB,0×28,0×0 2,0×86,0×ED,0×A0,0×AA,0×AA,0×7F,0×2D,0×F8,0×11,0×F5,0×13,0×DE,0×D4,0×7E,0×2D,0 ×FD,0×73,0×C9,0×8E,0×DA,0×62,0×57,0×1A,0×8B,0×0F,0×0E,0×F8,0×14,0×58,0×4B,0×DC, 0×B5,0×3D,0×EB,0×AD,0×DF,0×97,0×96,0×A8,0×97,0×D0,0×D1,0×DB,0×8D,0×76,0×05,0× A9,0×A8,0×66,0×A2,0×45,0×42,0×B4,0×99,0×C9,0×6F,0×57,0×1B,0×EF,0×61,0×E7,0×24,0× 6A,0×6D,0×0A,0×38,0×F4,0×77,0×67,0×12,0×90,0×0B,0×26,0×D4,0×99,0×A6,0×50,0×7D,0× 5D,0×A6,0×70,0×10,0×56,0×EA,0×B C,0×90,0×D4,0×91,0×0C,0×9E,0×6C,0×D5,0×0E,0×F3,0 ×DA,0×CF,0×3A,0×77,0×37,0×94,0×B1,0×02,0×03,0×01,0×00,0×01,0×A3,0×60,0×30,0×5E,0 ×30,0×1D,0×06,0×03,0×55,0×1D,0×0E,0×04,0×16,0×04,0×14,0×FC,0×5A,0×9A,0×24,0×4C,0 ×E8,0×92,0×E9,0×E8,0×E8,0×63,0×FA,0×AD,0×1F,0×BE0×FA,0×06,0×55,0×8A,0×E9,0×30, 0×0C,0×06,0×03,0×55,0×1D,0×13,0×01,0×01,0×FF,0×04,0×02,0×30,0×00,0×30,0×1F,0×06,0× 03,0×55,0×1D,0×23,0×04,0×18,0×30,0×16,0×80,0×14,0×FF,0×4B,0×1A,0×43,0×9A,0×F5,0×1 9,0×96,0×AB,0×18,0×00,0×2B,0×61,0×C9,0×EE,0×40,0×9D,0×8E,0×C70×04,0×30,0×0E,0×0 60×03,0×55,0×1D,0×0F,0×01,0×01,0×FF,0×04,0×04,0×03,0×02,0×03,0×B8,0×30,0×0D,0×06, 0×09,0×2A,0×86,0×48,0×86,0×F7,0×0D,0×01,0×01,0×05,0×05,0×00,0×03,0×82,0×01,0×01,0× 00,0×5E,0×9B,0×19,0×FC,0×0E,0×71,0×D7,0×5F,0×9B,0×3D,0×B9,0×3C,0×77,0×FA,0×F9,0 ×F9,0×03,0×32,0×FC,0×61,0×CE,0×CD,0×07,0×00,0×9A,0×A7,0×20,0×16,0×D2,0×4D,0×67, 0×17,0×1D,0×2C,0×2B,0×27,0×9A,0×2C,0×E3,0×29,0×92,0×0B,0×13,0×26,0×E6,0×9E,0×83, 0×13,0×65,0×A4,0×76,0×D6,0×55,0×15,0×DB,0×37,0×DE,0×7D,0×39,0×D9,0×BA,0×35,0×A 5,0×6F,0×CA,0×C5,0×5F,0×D7,0×D1,0×79,0×08,0×27,0×D2,0×54,0×4E,0×DC,0×58,0×14,0× C1,0×86,0×BD,0×1E,0×59,0×FA,0×63,0×0E,0×B6,0×67,0×C4,0×56,0×0F,0×03,0×C1,0×11,0× E4,0×37,0×8C,0×A8,0×71,0×79,0×4E,0×48,0×A1,0×30,0×E3,0×64,0×2B,0×4C,0×7B,0×67,0x C8,0×81,0×F1,0×87,0×6C,0×24,0×4E,0×A4,0×AF,0×40,0×D5,0×CA,0×A3,0×3B,0×2C,0×17,0 ×9E,0×ED,0×B7,0×51,0×74,0×C0,0×22,0×8A,0×49,0×0E,0×A5,0×B6,0×6,0×D7,0×CF,0×49, 0×4D,0×0A,0×FF,0×14,0×D1,0×45,0×CC,0×CC,0×03,0×99,0×EC,0×E7,0×23,0×72,0×69,0×1,0×D6,0×B9,0×A3,0×60,0×81,0×B3,0×6A,0×07,0×FF,0×F2,0×95,0×8E,0×61,0×AE,0×45,0×44, 0×55,0×B8,0×47,0×B5,0×D7,0×2A,0×2C,0×4D,0×EC,0×A6,0×B3,0×81,0×E7,0×9E,0×E1,0×1 A,0×1D,0×1D,0×74,0×3F,0×EA,0×23,0×75,0×15,0×C9,0×17,0×39,0×26,0×67,0×D9,0×82,0×2 3,0×DE,0×C6,0×F8,0×4A,0×32,0×5F,0×58,0×35,0×5E,0×01,0×DE,0×C4,0×9A,0×DD,0×BF,0× 2B,0×29,0×EC,0×C8,0×89,0×08,0×DB,0×09,0×F9,0×9B,0×E1,0×89,0×7C,0×65,0×66,0×9B,0× F0,0×A9,0×EE,0×10,0×E6,0×CF,0×CE,0×A8,0×0,0×C2,0×E4,0×BF,0×CB,0×D5,0×48,0×20,0 ×FD,0×E6,0×13,0×31,0×00,0×B0.

Step 106-3, the Apple device authenticates the certificate in the certificate response data, performs step 106-4 if the authentication is successful; reports error and ends the procedure if the authentication fails.

Specifically, in the embodiment, the step 106-3 includes: the Apple device uses a stored public key to decrypt a signature value in the certificate to obtain a first decryption value, performs a hash operation on data to be signed in the certificate to obtain a first hash value, determines whether the first hash value is identical to the first decrypting value, if yes, the authentication of the certificate is successful, performs step 106-4; otherwise, the authentication fails, reports error and ends the procedure.

Step 106-4, the Apple device generates a challenge value, generates a challenge instruction according to the challenge value and sends the challenge instruction to the external device.

For example, the challenge instruction in the embodiment is: 0×FF,0×5A0×00,0×28,0×40,0×E9,0×1D,0×01,0×38,0×40,0×40,0×00,0×1E,0×AA,0×02,0×00,0 ×18,0×00,0×00,0×DF,0×5B,0×69,0×EE,0×43,0×F7,0×14,0×A4,0×70,0×6E,0×60,0×CF,0×D6,0 ×04,0×52,0×1F,0×07,0×5C,0×CC,0×D7,0×BD.

Step 106-5, the external device receives the challenge instruction via the USB interface, parses the challenge instruction and sends the challenge value obtained by parsing to the internal authentication chip, reads a challenge value signature result from the internal authentication chip, generates challenge response data according to the challenge value signature result and stores the challenge response data in the send cache, and returns the challenge response data in the send cache to the Apple device via the USB interface.

For example, the read challenge response data in the embodiment is: 0×FF,0×5A,0×00,0×94,0×40,0×1E,0×E9,0×01,0×CB,0×40,0×40,0×00,0×8A,0×AA,0×03,0×00, 0×84,0×00,0×00,0×00,0×E5,0×A8,0×3D,0×B7,0×1B,0×E3,0×66,0×E4,0×DE,0×A4,0×5E,0×D4,0×33,0×E5,0×4E,0×7B,0×90,0×6E,0×E3,0×9B,0×33,0×93,0×4A,0×14,0×CA,0×F3,0×A7,0×D 3,0×6B,0×DE,0×1E,0×0E,0×14,0×66,0×37,0×68,0×72,0×D1,×76,0×7D,0×36,0×DC,×9D,0×4 4,0×88,0×3D,0×55,0×AD,0×3D,0×CD,0×CE,0×84,0×C2,0×50,0×CF,0×5E,0×81,0×CB,0×A6,0 ×BB,0×B0,0×78,0×64,0×CE,0×91,0×99,0×D3,0×D0,0×23,0×48,0×67,0×A5,0×D4,0×00,0×6B, 0×07,0×7A,0×6B,0×FE,0×7E,0×A7,0×17,0×EB,0×36,0×F3,0×56,0×C7,0×35,0×46,0×5D,0×F6, 0×46,0×96,0×72,0×C3,0×28,0×F5,0×16,0×C3,0×95,0×55,0×96,0×00,0×C9,0×5D,0×AF,0×09,0 ×F0,0×69,0×7A,0×C5,0×F9,0×BB,0×10,0×4E,0×B4,0×00,0×E8,0×ED,0×16,0×77,0×BE,0×CC, 0×DF,0×99,0×61,0×65,0×DB.

Step 106-6, the Apple device authenticates the challenge value signature result in the challenge response data, performs step 106-7 if the authentication is successful, reports error and ends the procedure if the authentication fails.

Specifically, in the embodiment, the step 106-6 includes: the Apple device uses a stored public key to decrypt the challenge value signature result in the challenge response data to obtain a second decryption value, performs a hash operation on the challenge value in the challenge response data to obtain a second hash value, determines whether the second decrypting value is identical to the second hash value, if yes, the authentication is successful, performs step 106-7; otherwise, the authentication fails, reports error and ends the procedure.

Step 106-7, the Apple device sends authentication success information to the external device.

For example, the authentication success information in the embodiment is: 0×FF,0×5A,0×00,0×10,0×40,0xEA,0×1E,0×01,0×4E,0×40,0×40,0×00,0×06,0xAA,0×05,0×CB.

Step 107, the Apple device sends a device authentication instruction to the external device.

For example, the device authentication instruction in the embodiment is: 0×FF,0×5A,0×00,0×10,0×40,0×57,0×DC,0×01,0×23,0×40,0×40,0×00,0×06,0×1D,0×00,0×5D.

Step 108, the external device receives the device authentication instruction via the USB interface, organizes an authentication response and stores the authentication response in the send cache, returns the authentication response in the send cache to the Apple device via the USB interface.

For example, the identification response returned to the Apple device in the embodiment is: 0×FF,0×5A,0×01,0×10,0×40,0×DD,0×57,0×01,0×21,0×40,0×40,0×01,0×06, 0×1D,0×01,0×00,0×10,0×00,0×00,0×69,0×65,0×50,0×61,0×73,0×73,0×46,0×49,0×44,0×4F,0×3 2,0×00,0×00,0×10,0×00,0×01,0×69,0×65,0×50,0×61,0×73,0×73,0×46,0×49,0×44,0×4F,×32,0× 00,0×00,0×0C,0×00,0×02,0×46,0×65,0×69,0×74,0×69,0×61,0×6E,0×00,0×00,0×15,0×00,0×03, 0×30,0×30,0×30,0×30,0×30,0×30,0×30,0×30,0×30,0×30,0×30,0×30,0×30,0×30,0×30,0×30,0×0 0,0×00,0×0A,0×00,0×04,0×31,0×2E,0×30,0×2E,0×30,0×00,0×00,0×0A,0×00,0×05,0×31,0×2E, 0×30,0×2E,0×30,0×00,0×00,0×0A,0×00,0×06,0×68,0×00,0×68,0×02,0×68,0×03,0×00,0×0A,0× 00,0×07,0×EA,0×00,0×EA,0×01,0×68,0×01,0×00,0×05,0×00,0×08,0×00,0×00,0×06,0×00,0×09, 0×00,0×32,0×00,0×29,0×00,0×0A,0×00,0×05,0×00,0×00,0×00,0×00,0×1B,0×00,0×01,0×63,0× 6F,0×6D,0×2E,0×66,0×74,0×73,0×61,0×66,0×65,0×2E,0×69,0×65,0×50,0×61,0×73,0×73,0×46, 0×49,0×44,0×4F,0×32,0×00,0×00,0×05,0×00,0×02,0×01,0×00,0×0F,0×00,0×0B,0×53,0×34,0×3 7,0×54,0×34,0×55,0×45,0×53,0×50,0×33,0×00,0×00,0×07,0×00,0×0C,0×65,0×6E,0×00,0×00,0 ×07,0×00,0×0D,0×65,0×6E,0×00,0×00,0×26,0×00,0×10,0×00,0×06,0×00,0×00,0×00,0×00,0×0 0,0×18,0×00,0×01,0×4C,0×69,0×67,0×68,0×74,0×6E,0×69,0×6E,0×67,0×20,0×43,0×6F,0×6E,0 ×6E,0×65,0×63,0×74,0×6F,0×72,0×00,0×00,0×04,0×00,0×02,0×00,0×20,0×00,0×12,0×00,0×06, 0×00,0×00,0×00,0×01,0×00,0×11,0×00,0×01,0×55,0×73,0×62,0×20,0×4B,0×65,0×79,0×62,0×6 F,0×61,0×72,0×64,0×00,×00,0×05,0×00,0×02,0×00,0×A4.

Step 109, the Apple device prompts a user to press a key on the external device.

Step 110, in a case that the user pressing a key is detected, the external device generates key-value data, organizes a start command according to a preset HID identifier and stores the start command in the send cache, and sets a sending identifier as a first preset value.

The start command in the embodiment is used for declaring that the external device is a keyboard device; and the present HID identifier includes: a HID identification code and a HID report descriptor.

For example, the external device in the embodiment is OTP, the generating key-value data specifically is: generating a dynamic password according to seed data and/or a dynamic factor and taking the dynamic password as the key-value data.

Step 111, in a case that the external device receives the data request sent by the Apple device via the USB interface, the external device determines whether the sending identifier is the first preset value, if yes, the external device sends the start command in the send cache to the Apple device via the USB interface and clears the send cache, waits for receiving the data request continuously sent by the Apple device; in a case that the external device detects that the send cache is cleared, the external device generates an attaching report command according to the key-value data and stores the attaching report command in the send cache, sets the sending identifier as a second preset value, and performs step 112; otherwise, the external device returns response data to the Apple device via the USB interface.

In the embodiment, the generating an attaching report command according to the key-value data and stores the attaching report command in the send cache in the step 111 specifically is: converting the key-value data into key-pressing information, generating an attaching report command according to the key-pressing information and storing the attaching report command into the send cache.

For example, the start command in the embodiment is: 0×FF, 0×5A, 0×00, 0×65, 0×40, 0×41, 0×E9, 0×0A, 0×CE, 0×40, 0×40, 0×00, 0×5B, 0×68, 0×00, 0×00, 0×06, 0×00, 0×00, 0×00, 0×01, 0×00, 0×06, 0×00, 0×01, 0×10, 0×50, 0×00, 0×06, 0×00, 0×02, 0×04, 0×20, 0×00, 0×43, 0×00, 0×04, 0×05, 0×01, 0×09, 0×06, 0×A1, 0×01, 0×05, 0×07, 0×19, 0×E0, 0×29, 0×E7, 0×15, 0×00, 0×25, 0×01, 0×75, 0×01, 0×95, 0×08, 0×81, 0×02, 0×95, 0×01, 0×75, 0×08, 0×81, 0×01, 0×95, 0×05, 0×75, 0×01, 0×05, 0×08, 0×19, 0×01, 0×29, 0×05, 0×91, 0×02, 0×95, 0×01, 0×75, 0×03, 0×91, 0×01, 0×95, 0×06, 0×75, 0×08, 0×15, 0×00, 0×25, 0×65, 0×05, 0×07, 0×19, 0×00, 0×29, 0×65, 0×81, 0×00, 0×C0, 0×67.

Step 112, the Apple device exits a soft keyboard after receiving the start command, and the Apple device continuously sends the data request to the external device.

Step 113, in a case that the external device receives the data request sent by the Apple device via the USB interface, the external device determines whether the sending identifier is a second preset value, if yes, the external device sends the attaching report command in the send cache to the Apple device via the USB interface and clears the send cache, waits for receiving the data request continuously sent by the Apple device; in a case that the external device detects that the send cache is cleared, the external device organizes an end command and stores the end command in the send cache, sets the sending identifier as a third preset value, and performs step 114; otherwise, the external device returns response data to the Apple device via the USB interface.

In the embodiment, the converting the key-value data into key-pressing information specifically is: converting key-value data, i.e. 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 into key-pressing information, i.e. 0×1E, 0×1F, 0×20, 0×21, 0×22, 0×23, 0×24, 0×25, 0×26, 0×27 correspondingly. In addition, according to a USB keyboard protocol, key-lifting information corresponding to key-pressing information is 0×00. The USB interface of the external device sends the key-pressing information and the key-lifting information to the Apple device in packet; only after receiving the key-pressing information and the key-lifting information, the Apple device can identify a complete key-pressing process and display the key-pressing information accordingly. The packet format of the key-pressing information and the key-lifting information is |Modifier key | Reserved | Keycode1 | Keycode2 | Keycode3 | Keycode4 | Keycode5 | Keycode6 |; and the packet format may have any number of key-pressing information from 1 to 6. The external device sends the data packet of the key-pressing information to the Apple device via the USB interface, which is to send a data packet containing one key-pressing information to the Apple device many times, or to send a data packet containing multiple key-pressing information to the Apple device at one time or many times. The position of the key-pressing information in the attaching report command is from the second bit to the ninth bit from the lower order.

For example, the key-value data in the embodiment is 123456, and 6 bits key-value data are respectively converted into key-pressing information according to the USB keyboard protocol:

-   the key-value data 1 corresponds to key-pressing information 0×1E,     the corresponding data packet is:     0×00,0×00,0×1E,0×00,0×00,0×00,0×00,0×00; -   the key-value data 2 corresponds to key-pressing information 0×1F,     the corresponding data packet is:     0×00,0×00,0×1F,0×00,0×00,0×00,0×00,0×00; -   the key-value data 3 corresponds to key-pressing information 0×20,     the corresponding data packet is:     0×00,0×00,0×20,0×00,0×00,0×00,0×00,0×00; -   the key-value data 4 corresponds to key-pressing information 0×21,     the corresponding data packet is:     0×00,0×00,0×21,0×00,0×00,0×00,0×00,0×00; -   the key-value data 5 corresponds to key-pressing information 0×22,     the corresponding data packet is:     0×00,0×00,0×22,0×00,0×00,0×00,0×00,0×00; -   the key-value data 6 corresponds to key-pressing information 0×23,     the corresponding data packet is:     0×00,0×00,0×23,0×00,0×00,0×00,0×00,0×00.

The key-lifting information is 0×00, and the data packet is: 0×00,0×00,0×00,0×00,0×00,0×00,0×00,0×00.

The generated 12 pieces of attaching report command are:

-   0×FF,0×5A,0×00,0×22,0×40,0×2B,0×D8,0×01,0×41,0×40,0×40,0×00,0×18,0×68,0×     02,0×00,0×06,0×00,0×00,0×00,0×01,0×00,0×0C,0×00,0×01,0×00,0×00,0×1E,0×00,0×00,0×00,     0×00,0×00,0×CC; -   0×FF,0×5A,0×00,0×22,0×40,0×2C,0×D8,0×01,0×40,0×40,0×40,0×00,0×18,0×68,0×     02,0×00,0×06,0×00,0×00,0×00,0×01,0×00,0×0C,0×00,0×01,0×00,0×00,0×00,0×00,0×00,0×00,     0×00,0×00,0×EA; -   0×FF,0×5A,0×00,0×22,0×40,0×2D,0×D8,0×01,×3F,0×40,0×40,0×00,0×18,0×68,0×     02,0×00,0×06,0×00,0×00,0×00,0×01,0×00,0×0C,0×00,0×01,0×00,0×00,0×1F,0×00,0×00,0×00,     0×00,0×00,0×CB; -   0×FF,0×5A,0×00,0×22,0×40,0×2E,0×D8,0×01,0×3E,0×40,0×40,0×00,0×18,0×68,0×     02,0×00,0×06,0×00,0×00,0×00,0×01,0×00,0×0C,0×00,0×01,0×00,0×00,0×00,0×00,0×00,×00,     0×00,0×00,0×EA; -   0×FF,×5A,0×00,0×22,0×40,0×2F,0×D8,0×01,0×3D,0×40,0×40,0×00,0×18,0×68,0×     02,×00,0×06,0×00,0×00,0×00,0×01,0×00,0×0C,0×00,0×01,0×00,0×00,0×20,0×00,0×00,0×00,     0×00,0×00,0×CA; -   0×FF,0×5A,0×00,0×22,0×40,0×30,0×D8,0×01,0×3C,0×40,0×40,0×00,0×18,0×68,0×     02,0×00,0×06,0×00,0×00,0×00,0×01,0×00,0×0C,0×00,0×01,0×00,0×00,0×00,0×00,0×00,0×00,     0×00,0×00,0×EA; -   0×FF,0×5A,0×00,0×22,0×40,0×31,0×D8,0×01,0×3B,0×40,0×40,0×00,0×18,0×68,0×     02,0×00,0×06,0×00,0×00,0×00,0×01,0×00,0×0C,0×00,0×01,0×00,0×00,0×21,0×00,0×00,0×00,     0×00,0×00,0×C9; -   0×FF,0×5A,0×00,0×22,0×40,0×32,0×D8,0×01,0×3A,0×40,0×40,0×00,0×18,0×68,0×     02,0×00,0×06,0×00,0×00,0×00,0×01,0×00,0×0C,0×00,0×01,0×00,0×00,0×00,0×00,0×00,0×00,     0×00,0×00,0vEA; -   0×FF,0×5A,0×00,0×22,0×40,0×33,0×D8,0×01,0×39,0×40,0×40,0×00,0×18,0×68,0×     02,0×00,0×06,0×00,0×00,0×00,0×01,0×00,0×0C,0×00,0×01,0×00,0×00,0×22,0×00,0×00,0×00,     0×00,0×00,0×C8; -   0×FF,0×5A,0×00,0×22,0×40,0×34,0×D8,0×01,0×38,0×40,0×40,0×00,0×18,0×68,0×     02,0×00,0×06,0×00,0×00,0×00,0×01,0×00,0×0C,0×00,0×01,0×00,0×00,0×00,0×00,0×00,0×00,     0×00,0×00,0×EA; -   0×FF,0×5A,0×00,0×22,0×40,0×35,0×D8,0×01,0×37,0×40,0×40,0×00,0×18,0×68,0×     02,0×00,0×06,0×00,0×00,0×00,0×01,0×00,0×0C,0×00,0×01,0×00,0×00,0×23,0×00,0×00,0×00,     0×00,0×00,0×C7; -   0×FF,0×5A,0×00,0×22,0×40,0×36,0×D8,0×01,0×36,0×40,0×40,0×00,0×18,0×68,0×     02,0×00,0×06,0×00,0×00,0×00,0×01,0×00,0×0C,0×00,0×01,0×00,0×00,0×00,0×00,0×00,0×00,     0×00,0×00,0×EA.

In the embodiment, in a case that the USB interface of the external device sends one press key information every time, the specific process of sending the key-pressing information to the Apple device is: the USB interface of the external device sends the key-pressing information of key 1 (0×FF,0×5A,0×00,0×22,0×40,0×2B,0×D8,0×01,0×41,0×40,0×40,0×00,0×18,0×68,0×02,0×00,0 ×06,0×00,0×00,0×00,0×01,0×00,0×0C,0×00,0×01,0×00,0×00,0×1E,0×00,0×00,0×00,0×00,0×,0×CC) and the key-lifting information of key 1 (0×FF,0×5A,0×00,0×22,0×40,0×2C,0×D8,0×01,0×40,0×40,0×40,0×00,0×18,0×68,0×02,0×00,0 ×06,0×00,0×00,0×00,0×01,0×00,0×0C,0×00,0×01,0×00,0×00,0×00,0×00,0×00,0×00,0×00,0×00,0×EA) to the Apple device in packet; the Apple device identifies key 1 and continuously sends a data request to the external device; in a case that the USB interface of the external device receives the data request, the USB interface of the external device sends the key-pressing information of key 2 (0×FF,0×5A,0×00,0×22,0×40,0×2F,0×D8,0×0 1,0×3D,0×40,0×40,0×00,0×18,0×68,0×02,0×00,0 ×06,0×00,0×00,0×00,0×01,0×00,0×0C,0×00,0×01,0×00,0×00,0×20,0×00,0×00,0×00,0×00,0×00,0×CA) and the key-lifting information of key 2 (0×FF,0×5A,0×00,0×22,0×40,0×2E,0×D8,0×01,0×3E,0×40,0×40,0×00,0×18,0×68,0×02,0×00,0 ×06,0×00,0×00,0×00,0×01,0×00,0×0C,0x00,0×01,0×00,0×00,0×00,0×00,0×00,0×00,0×00,0×00,0×EA) to the Apple device in packet, the Apple device identifies key 2. In this way, the external device sends subsequent keys 3, 4, 5, 6 to the Apple device successively, and the Apple device finally identifies the complete key-pressing information 123456. Since the sending speed is very fast, the user can see complete key-pressing information 123456.

In a case that the USB interface of the external device sends 2 key-pressing information every time, the specific process of sending the key-pressing information to the Apple device is: the USB interface of the external device sends the key-pressing information of key 1 and key 2 (0×FFE,0×5A,0×00,0×22,0×40,0×2B,0×D8,0×01,0×41,0×40,0×40,0×00,0×18,0×68,0×02,0×00,0 ×06,0×00,0×00,0×00,0×01,0×00,0×0C,0×00,0×01,0×00,0×00,0×1E,0×1F,0×00,0×00,0×00,0×0,0×CC) and the key-lifting information of key 1 and key 2 (0×FF,0×5A,0×00,0×22,0×40,0×2C,0×D8,0×01,0×40,0×40,0×40,0×00,0×18,0×68,0×02,0×00,0 ×06,0×00,0×00,0×00,0×01,0×00,0×0C,0×00,0×01,0×00,0×00,0×00,0×00,0×00,0×x00,0×x00,0×0,0xEA) to the Apple device in packet, the Apple device identifies key 1 and key 2 and continuously sends a data request to the external device. In a case that the USB interface of the external device receives the data request, the USB interface of the external device sends the key-pressing information of the key 3 and key 4 (0×FF,0×5A,0×00,0×22,0×40,0×2F,0×D8,0×01,0×3D,0×40,0×40,0×00,0×18,0×68,0×02,0×00,0 ×06,0×00,0×00,0×00,0×01,0×00,0×0C,0×00,0×01,0×00,0×00,0×20,0×21,0×00,0×00,0×00,0×0,0×CA) and the key-lifting information of key 3 and key 4 (0×FF,0×5A,0×00,0×22,0×40,0×2E,0×D8,0×01,0×3E,0×40,0×40,0×00,0×18,0×68,0×02,0×00,0 ×06,0×00,0×00,0×00,0×01,0×00,0×0C,0×00,0×01,0×00,0×00,0×00,0×00,0×00,0×00,0×00,0×00,0×EA) to the Apple device in packet, and the Apple device identifies key 3 and key 4. In this way, the external device sends subsequent keys 5 and 6 to the Apple device successively. The Apple device finally identifies the complete key-pressing information 123456.

In a case that the USB interface of the external device sends 6 key-pressing information every time, the specific process of sending the key-pressing information to the Apple device is: the USB interface of the external device sends the key-pressing information of keys 1, 2, 3, 4, 5 and 6 (0×FF,0×5A,0×00,0×22,0×40,0×2B,0×D8,0×01,0×41,0×40,0×40,0×00,0×18,0×68,0×02,0×00,0 ×06,0×00,0×00,0×00,0×01,0×00,×0C,0×00,0×01,0×00,0×00,0×1E,0×1F,0×20,0×21,0×22,0×23,0×CC) and the key-lifting information of keys 1, 2, 3, 4, 5 and 6 (0×FF,0×5A,0×00,0×22,×40,0×2C,0×D8,0×01,0×40,0×40,0×40,0×00,0×18,0×68,0×02,0×00,0 ×06,0×00,0×00,0×00,0×01,0×00,0×0C,0×00,0×01,0×00,0×00,0×00,0×00,0×00,0×00,0×00,0×0,0×EA) to the Apple device in packet; and the Apple device identifies keys 1, 2, 3, 4, 5 and 6. The Apple device identifies the complete key-pressing information 123456.

Step 114, the Apple device displays the key-value data in the attaching report command after receiving the attaching report command, and the Apple device continuously sends the data request to the external device.

Step 115, in a case that the external device receives the data request sent by the Apple device via the USB interface, the external device determines whether the sending identifier is a third preset value, if yes, the external device sends the end command in the send cache to the Apple device via the USB interface and clears the send cache and the sending identifier, waits for receiving the data request sent by the Apple device, and performs step 116; otherwise, the external device returns response data to the Apple device via the USB interface.

Step 116, the Apple device pops up the soft keyboard again after receiving the end command.

For example, the end command in the embodiment is: 0×FF, 0×5A, 0×00, 0×16, 0×40, 0×9C, 0×E9, 0×0A, 0×C2, 0×40, 0×40, 0×00, 0×0C, 0×68, 0×03, 0×00, 0×06, 0×00, 0×00, 0×00, 0×01, 0×02.

Optionally, the external device in the embodiment may be a device with an OTP function.

In the embodiment, the step 109 may be replaced with: an application browser of the Apple device prompts the user to input key-value data.

Correspondingly, in the step 113, the Apple device displays the key-value data in the attaching report command after receiving the attaching report command may be replaced with: the Apple device sends the key-value data in the attaching report command to the browser after receiving the attaching report command, and the browser performs corresponding operation after receiving the key-value data.

Specifically, the browser performs corresponding operation after receiving the key-value data may be: the browser authenticates the identity of the user according to the key-value data, that is, the browser parses the key-value data to obtain a dynamic password and generates a dynamic password, determines whether the obtained dynamic password is identical to the generated dynamic password, if yes, the authentication is successful; otherwise, the authentication fails.

In the embodiment, in a case that the external device does not detect the sending identifier (or the sending identifier is a default value) when the external device receives the data request sent by the Apple device, the external device sends response data to the Apple device via the USB interface.

A function that an external device simulates a keyboard is dynamically implemented through the method of the embodiment, which reduces the conflict between the keyboard simulated by the external device and the soft keyboard of the Apple device, and reduces the burden of the Apple device. At the same time, the external device may also have other functions, such as an authenticator, a USB flash disk, etc., which is convenient for using by the user.

Embodiment 4

Embodiment 4 of the present disclosure provides an apparatus for implementing an external device simulating a keyboard; the apparatus of the embodiment connects with an Apple device to work. As shown in FIG. 4 , the apparatus of the embodiment includes:

-   a connecting and receiving and returning module 41, configured to     implement a connection between the apparatus and the Apple device,     wait for receiving a data request continuously sent by the Apple     device, return response data to the Apple device via a USB interface     in a case that the apparatus receives the data request sent by the     Apple device via the USB interface and there is no data in a send     cache of the apparatus; -   a first detecting and organizing and storing module 42, configured     to: in a case that a user pressing a key is detected in a process     that the connecting and receiving and returning module 41 is waiting     for receiving the data request continuously sent by the Apple     device, generate key-value data, organize a start command according     to a preset HID identifier and store the start command in the send     cache, and set a sending identifier as a first preset value; where     the start command is used for declaring that the apparatus is a     keyboard device; In the embodiment, the start command is used for     declaring that the external device is a keyboard device; and the     preset HID identifier includes a HID identification code and a HID     report descriptor; -   a first receiving and determining and sending module 43, configured     to: in a case that the data request sent by the Apple device is     received via the USB, determine whether the sending identifier is     the first preset value; if yes, send the start command in the send     cache to the Apple device via the USB interface and clear the send     cache, wait for receiving the data request continuously sent by the     Apple device, and trigger a detecting and generating and storing     module 44; otherwise, return response data to the Apple device via     the USB interface; -   the detecting and generating and storing module 44, configured to:     in a case that the send cache being cleared is detected, generate an     attaching report command according to the key-value data and store     the attaching report command in the send cache, and set the sending     identifier as a second preset value; in the embodiment, the     detecting and generating and storing module 44 is specifically     configured to: in a case that the send cache being cleared is     detected, convert the key-value data into key-pressing information,     generate an attaching report command according to the key-pressing     information and store the attaching report command in the send     cache; -   a second receiving and determining and sending module 45, configured     to: in a case that the data request sent by the Apple device is     received via the USB interface, determine whether the sending     identifier is the second preset value; if yes, send the attaching     report command in the send cache to the Apple device via the USB     interface and clear the send cache, wait for receiving the data     request continuously sent by the Apple device, and trigger a second     detecting and organizing and storing module 46; otherwise, return     response data to the Apple device via the USB interface; -   the second detecting and organizing and storing module 46,     configured to: in a case that the send cache being cleared is     detected, organize an end command and store the end command in the     send cache, and set the sending identifier as a third preset value;     and -   a third receiving and determining and sending module 47, configured     to: in a case that the data request sent by the Apple device is     received via the USB interface, determine whether the sending     identifier is the third preset value; if yes, send the end command     in the send cache to the Apple device via the USB interface and     clear the send cache and the sending identifier, wait for receiving     the data request continuously sent by the Apple device; otherwise,     return response data to the Apple device via the USB interface.

Further, the connecting and receiving and returning module 41 is specifically configured to: perform hardware system initialization after establishing a physical connection with the Apple device via a Lighting interface; receive the data request continuously sent by the Apple device, and return response data to the Apple device via the USB interface in a case that the data request sent by the Apple device is received via the USB interface and there is no data in the send cache.

The connecting and receiving and returning module 41 in the embodiment is further configured to store a detecting instruction in the send cache;

-   correspondingly, the apparatus of the embodiment further includes:     -   a fourth receiving and determining and sending module,         configured to: in a case that the data request sent by the Apple         device is received via the USB interface, determine whether         there is data in the send cache; if yes, send the detecting         instruction in the send cache to the Apple device via the USB         interface and receive support authentication protocol         information sent by the Apple device, negotiate synchronization         packet data with the Apple device; otherwise, return response         data to the Apple device via the USB interface; and     -   a receiving and organizing and sending module, configured to: in         a case that authentication success information and a device         authentication instruction sent by the Apple device are received         via the USB interface, organize an authentication response and         store the authentication response in the send cache, and return         the authentication response in the send cache to the Apple         device via the USB interface.

Optionally, the apparatus in the embodiment further includes:

-   a receiving and reading and sending module, configured to: in a case     that a certificate acquisition instruction sent by the Apple device     is received via the USB interface, read a certificate from an     internal authentication chip and store the certificate in the send     cache, and return the certificate in the send cache to the Apple     device via the USB interface; and -   a parsing and reading and sending module, configured to: in a case     that a challenge instruction sent by the Apple device is received     via the USB interface, parse the challenge instruction and send a     challenge value obtained by parsing to the internal authentication     chip, read a challenge value signature result from the internal     authentication chip and store the challenge value signature result     in the send cache, and return the challenge value signature result     in the send cache to the Apple device via the USB interface.

Further, the detecting and generating and storing module 44 in the embodiment is specifically configured to: in a case that the send cache being cleared is detected, convert the key-value data into key-pressing information, generate an attaching report command according to the key-pressing information and store the attaching report command in the send cache.

Embodiment 5

Embodiment 5 of the present disclosure provides a system for implementing an external device simulating a keyboard. As shown in FIG. 5 , the system includes an Apple device 1 and an external device 2; the Apple device 1 includes: a connecting and sending module 11, an authenticating module 12, a prompting module 13, a receiving and exiting and sending module 14, a receiving and displaying and sending module 15 and a receiving and re-popping module 16; the external device 2 includes: a first receiving and returning module 21, a first detecting and organizing and storing module 22, a first receiving and determining and sending module 23, a detecting and generating and storing module 24, a second receiving and determining and sending module 25, a second detecting and organizing and storing module 26 and a third receiving and determining and sending module 27;

-   the first receiving and returning module 21 is configured to return     response data to the Apple device 1 via a USB interface in a case     that the data request sent by the Apple device 1 is received via the     USB interface and there is no data in the send cache; -   the first receiving and returning module 21 is configured to return     response data to the Apple device 1 via a USB interface in a case     that the external device 2 receives the data request sent by the     Apple device 1 via the USB interface and there is no data in the     send cache; -   the authenticating module 12 is configured to authenticate the     external device 2; trigger the prompting module in a case that the     authentication is successful; otherwise, report error and end the     procedure; -   the prompting module 13 is configured to prompt a user to press a     key on the external device 2; -   the first detecting and organizing and storing module 22 is     configured to: in a case that the user pressing a key is detected,     generate key-value data, organize a start command according to a     preset HID identifier and store the start command in the send cache,     set a sending identifier as a first preset value, and trigger the     first receiving and determining and sending module 23; in the     embodiment, the start command is used for declaring that the     external device 2 is a keyboard device; the preset HID identifier     includes a HID identification code and a HID report descriptor; -   the first receiving and determining and sending module 23 is     configured to: in a case that the data request sent by the Apple     device 1 is received via the USB interface, determine whether the     sending identifier is the first preset value, if yes, send the start     command in the send cache to the Apple device 1 via the USB     interface and clear the send cache, wait for receiving the data     request continuously sent by the Apple device 1, and trigger the     detecting and generating and storing module 24; otherwise, return     response data to the Apple device 1 via the USB interface; -   the detecting and generating and storing module 24 is configured to:     in a case that the send cache being cleared is detected, generate an     attaching report command according to the key-value data and store     the attaching report command in the send cache, and set the sending     identifier as a second preset value; -   the receiving and exiting and sending module 14 is configured to     exit a soft keyboard after receiving the start command, send the     data request to the external device 2, and trigger the second     receiving and determining and sending module 25; -   the second receiving and determining and sending module 25 is     configured to: in a case that the data request sent by the Apple     device 1 is received via the USB interface, determine whether the     sending identifier is a second preset value, if yes, send the     attaching report command in the send cache to the Apple device 1 via     the USB interface and clear the send cache, wait for receiving the     data request continuously sent by the Apple device 1, and trigger     the second detecting and organizing and storing module 26;     otherwise, return response data to the Apple device 1 via the USB     interface; -   the second detecting and organizing and storing module 26 is     configured to: in a case that the send cache being cleared is     detected, organize an end command and store the end command in the     send cache, and set the sending identifier as a third preset value; -   the receiving and displaying and sending module 15 is configured to     display the key-value data in the attaching report command after     receiving the attaching report command, continuously send the data     request to the external device 2, and trigger the third receiving     and determining and sending module 27; -   the third receiving and determining and sending module 27 is     configured to: in a case that the data request sent by the Apple     device 1 is received via the USB interface, determine whether the     sending identifier is a third preset value, if yes, send the end     command in the send cache to the Apple device 1 via the USB     interface and clear the send cache and the sending identifier, wait     for receiving the data request sent by the Apple device 1;     otherwise, return response data to the Apple device 1 via the USB     interface; -   the receiving and re-popping module 16 is configured to pop up the     soft keyboard again after receiving the end command.

In the embodiment, the Apple device 1 further includes a detecting and returning module and a first sending module, the external device 2 further includes a receiving and negotiating module and a receiving and organizing and storing module;

-   the detecting and returning module is configured to detect whether     it supports an authentication protocol, if yes, return supporting     authentication protocol information to the external device 2,     otherwise, report error and end the procedure; -   the receiving and negotiating module is configured to negotiate     synchronization packet data with the Apple device 1 after receiving     the authenticating protocol information via the USB interface; -   the first sending module is configured to send a device     authentication instruction to the external device 2 after the     authenticating module 12 authenticates the external device 2     successfully; -   the receiving and organizing and storing module is configured to:     after receiving the device authentication instruction via the USB     interface, organize an authentication response and store the     authentication response in the send cache; return the authentication     response in the send cache to the Apple device 1 via the USB     interface; -   the prompting module is configured to prompt a user to press a key     on the external device 2 in a case that the authentication response     is received.

In the embodiment, the external device 2 further includes:

-   a first storing module, configured to store a detecting instruction     in the send cache after the Apple device 1 establishes a connection     with the external device 2; -   the detecting and returning module is specifically configured to: in     a case that the data request sent by the Apple device 1 is received     via the USB interface, determine whether there is data in the send     cache, if yes, send the detect instruction in the send cache to the     Apple device 1; otherwise, report error and end the procedure; -   the Apple device 1 further includes: a fourth receiving and     determining and returning module, configured to: after receiving the     detecting instruction, determine whether it supports the     authentication protocol, if yes, return Apple device 1 supporting     authentication protocol information to the external device 2, and     trigger the receiving and negotiating module; otherwise, report     error and end the procedure.

Further, the fourth receiving and determining and returning module is specifically configured to: after receiving the detecting instruction, determine whether the protocol supported by itself includes the authentication protocol specified by the detecting instruction; if yes, return Apple device 1 supporting authentication protocol information to the external device 2, and trigger the receiving and negotiating module; otherwise, report error and end the procedure.

Specifically, in the embodiment, the connecting and sending module 11 includes:

-   a connecting and initializing unit, configured to establishes a     physical connection with the external device 2 via a Lighting     interface, where the external device 2 performs hardware system     initialization; and -   an enumerating and sending unit, configured to perform USB     enumerating, and continuously send a data request to the external     device 2 after the USB enumeration is completed.

Specifically, in the embodiment, the authenticating module 12 includes: a first sending unit, a first receiving and authenticating unit, a generating and sending unit and a second receiving and authenticating unit; the external device 2 further includes: a receiving and reading and sending module and a parsing and reading and sending module;

-   the first sending unit is configured to send a certificate     acquisition instruction to the external device 2; -   the receiving and reading and sending module is configured to: in a     case that the certificate acquisition instruction sent by the Apple     device 1 is received via the USB interface, read a certificate from     an internal authentication chip and store the certificate in the     send cache, and return the certificate in the send cache to the     Apple device 1 via the USB interface; -   the first receiving and authenticating unit is configured to receive     and authenticate the certificate; trigger the generating and sending     unit in a case that the authentication is successful; and report     error and end the procedure in a case that the authentication fails;     further, the first receiving and authenticating unit is specifically     configured to use a stored public key to decrypt a signature value     in the certificate to obtain a first decrypting value, perform a     hash operation on data to be signed in the certificate to obtain a     first hash value, determine whether the first hash value is     identical to the first decrypting value; if yes, the authentication     is successful, trigger the generating and sending unit; otherwise,     the authentication fails, report error and end the procedure; -   the generating and sending unit is configured to generate a     challenge value, generate a challenge instruction according to the     challenge value and send the challenge instruction to the external     device 2; -   the parsing and reading and sending module is configured to: in a     case that the challenge instruction sent by the Apple device 1 is     received via the USB interface, parse the challenge instruction and     send the challenge value obtained by parsing to the internal     authentication chip, read a challenge value signature result from     the internal authentication chip and store the challenge value     signature result in the send cache, and return the challenge value     signature result in the send cache to the Apple device 1 via the USB     interface; -   the second receiving and authenticating unit is configured to     receive and authenticate the challenge value signature result, send     authentication success information to the external device 2 in a     case that the authentication is successful, report error and end the     procedure in a case that the authentication fails; further, the     second receiving and authenticating unit is specifically configured     to receive the challenge value signature result, use a stored public     key to decrypt the challenge value signature result to obtain a     second decrypting value, perform a hash operation on the generated     challenge value to obtain a second hash value, determine whether the     second decrypting value is identical to the second hash value; if     yes, the authentication is successful, send authentication success     information to the external device 2; otherwise, the authenticating     fails, report error and end the procedure.

Optionally, the prompting module 13 in the embodiment is further configured to prompt a user to input key-value data via an application browser of the Apple device 1;

the receiving and displaying and sending module 15 is further configured to send the key-value data in the attaching report command to the browser after receiving the attaching report command; the browser performs corresponding operation after receiving the key-value data; the receiving and displaying and sending module is further configured to continue to send the data request to the external device 2.

Through the technical solutions of the embodiment in the present disclosure, when an external device is connected with an Apple device, the external device can simulate a keyboard and an Apple soft keyboard can be used normally as well, which reduces the conflict between the soft keyboard of the Apple device and the keyboard simulated by the external device, and reduces the burden of the Apple device, which is convenient for using by a user.

The above descriptions are only preferred specific embodiments of the present disclosure, but the protection scope of the present disclosure is not limited thereto. Any changes or substitutions that can be easily conceived by those skilled in the art within the technical scope of the present disclosure should be included in the protection scope of the present disclosure. Therefore, the protection scope of the present disclosure should be subject to the protection scope of the claims. 

1-10. (canceled)
 11. A method for implementing an external device simulating a keyboard, comprising: step T1, establishing, by the external device, a connection with the Apple device, waiting for receiving a data request continuously sent by the Apple device, returning response data to the Apple device via a universal serial bus (USB) interface in a case that the external device receives the data request sent by the Apple device via the USB interface and there is no data in a send cache of the external device, and performing step T2 in a case that a user pressing a key is detected in a process that the external device is waiting for receiving the data request continuously sent by the Apple device; step T2, generating, by the external device, key-value data, organizing a start command according to a preset human interface device (HID) identifier and storing the start command in the send cache, and setting a sending identifier as a first preset value; wherein the start command is used for declaring that the external device is a keyboard device; step T3, in a case that the external device receives the data request sent by the Apple device via the USB interface, determining, by the external device, whether the sending identifier is the first preset value; if yes, sending the start command in the send cache to the Apple device via the USB interface and clearing the send cache, waiting for receiving the data request continuously sent by the Apple device, and performing step T4; otherwise, returning response data to the Apple device via the USB interface; step T4, in a case that the external device detects that the send cache is cleared, generating, according to the key-value data, an attaching report command and storing the attaching report command in the send cache, and setting the sending identifier as a second preset value; step T5, in a case that the external device receives the data request sent by the Apple device via the USB interface, determining, by the external device, whether the sending identifier is the second preset value; if yes, sending the attaching report command in the send cache to the Apple device via the USB interface and clearing the send cache, waiting for receiving the data request continuously sent by the Apple device, and performing step T6; otherwise, returning response data to the Apple device via the USB interface; step T6, in a case that the external device detects that the send cache is cleared, organizing an end command and storing the end command in the send cache, and setting the sending identifier as a third preset value; and step T7, in a case that the external device receives the data request sent by the Apple device via the USB interface, determining whether the sending identifier is the third preset value; if yes, sending the end command in the send cache to the Apple device via the USB interface and clearing the send cache and the sending identifier, waiting for receiving the data request continuously sent by the Apple device; otherwise, returning response data to the Apple device via the USB interface.
 12. The method according to claim 11, wherein step T1 comprises: after the external device establishes a physical connection with the Apple device via a Lighting interface, performing hardware system initialization; receiving the data request continuously sent by the Apple device, and returning response data to the Apple device via the USB interface in a case that the external device receives the data request sent by the Apple device via the USB interface and there is no data in the send cache.
 13. The method according to claim 11, wherein step T1 further comprises: storing, by the external device, a detecting instruction in the send cache; between step T1 and step T2, the method further comprises: step Z1, in a case that the external device receives the data request sent by the Apple device via the USB interface, determining, by the external device, whether there is data in the send cache; if yes, sending the detecting instruction in the send cache to the Apple device via the USB interface and receiving support authentication protocol information sent by the Apple device, and negotiating synchronization packet data with the Apple device; otherwise, returning, by the external device, response data to the Apple device via the USB interface; and step Z2, in a case that the external device receives authentication success information and a device authentication instruction sent by the Apple device via the USB interface, organizing, by the external device, an authentication response and storing the authentication response in the send cache, and returning the authentication response in the send cache to the Apple device via the USB interface.
 14. The method according to claim 13, wherein before step Z2, the method further comprises: in a case that the external device receives a certificate acquisition instruction sent by the Apple device via the USB interface, reading, by the external device, a certificate from an internal authentication chip and storing the certificate in the send cache, and returning the certificate in the send cache to the Apple device via the USB interface; and in a case that the external device receives a challenge instruction sent by the Apple device via the USB interface, parsing, by the external device, the challenge instruction and sending a challenge value obtained by parsing to the internal authentication chip, reading a challenge value signature result from the internal authentication chip and storing the challenge value signature result in the send cache, and returning the challenge value signature result in the send cache to the Apple device via the USB interface.
 15. The method according to claim 11, wherein the generating, according to the key-value data, of an attaching report command and storing the attaching report command in the send cache in step T4 comprises: converting the key-value data into key-pressing information, generating an attaching report command according to the key-pressing information and storing the attaching report command in the send cache.
 16. An apparatus for implementing an external device simulating a keyboard, wherein the apparatus is connected to an Apple device to work, the apparatus comprising: a memory and a processor; wherein the memory is configured to store executable instructions of the processor; and the processor, when executing the executable instructions, is configured to: implement a connection between the apparatus and the Apple device, wait for receiving a data request continuously sent by the Apple device, return response data to the Apple device via a universal serial bus (USB) interface in a case that the apparatus receives the data request sent by the Apple device via the USB interface and there is no data in a send cache of the apparatus; in a case that a user pressing a key is detected in a process of waiting for receiving the data request continuously sent by the Apple device, generate key-value data, organize a start command according to a preset human interface device (HID) identifier and store the start command in the send cache, and set a sending identifier as a first preset value; wherein the start command is used for declaring that the apparatus is a keyboard device; in a case that the data request sent by the Apple device is received via the USB, determine whether the sending identifier is the first preset value; if yes, send the start command in the send cache to the Apple device via the USB interface and clear the send cache, wait for receiving the data request continuously sent by the Apple device; otherwise, return response data to the Apple device via the USB interface; in a case that the send cache being cleared is detected, generate an attaching report command according to the key-value data and store the attaching report command in the send cache, and set the sending identifier as a second preset value; in a case that the data request sent by the Apple device is received via the USB interface, determine whether the sending identifier is the second preset value; if yes, send the attaching report command in the send cache to the Apple device via the USB interface and clear the send cache, wait for receiving the data request continuously sent by the Apple device; otherwise, return response data to the Apple device via the USB interface; in a case that the send cache being cleared is detected, organize an end command and store the end command in the send cache, and set the sending identifier as a third preset value; and in a case that the data request sent by the Apple device is received via the USB interface, determine whether the sending identifier is the third preset value; if yes, send the end command in the send cache to the Apple device via the USB interface and clear the send cache and the sending identifier, wait for receiving the data request continuously sent by the Apple device; otherwise, return response data to the Apple device via the USB interface.
 17. The apparatus according to claim 16, wherein the processor, when executing the executable instructions, is configured to: perform hardware system initialization after establishing a physical connection with the Apple device via a Lighting interface; receive the data request continuously sent by the Apple device, and return response data to the Apple device via the USB interface in a case that the data request sent by the Apple device is received via the USB interface and there is no data in the send cache.
 18. The apparatus according to claim 16, wherein the processor, when executing the executable instructions, is configured to: store a detecting instruction in the send cache; in a case that the data request sent by the Apple device is received via the USB interface, determine whether there is data in the send cache; if yes, send the detecting instruction in the send cache to the Apple device via the USB interface and receive support authentication protocol information sent by the Apple device, negotiate synchronization packet data with the Apple device; otherwise, return response data to the Apple device via the USB interface; and in a case that authentication success information and a device authentication instruction sent by the Apple device are received via the USB interface, organize an authentication response and store the authentication response in the send cache, and return the authentication response in the send cache to the Apple device via the USB interface.
 19. The apparatus according to claim 18, wherein the processor, when executing the executable instructions, is configured to: in a case that a certificate acquisition instruction sent by the Apple device is received via the USB interface, read a certificate from an internal authentication chip and store the certificate in the send cache, and return the certificate in the send cache to the Apple device via the USB interface; and in a case that a challenge instruction sent by the Apple device is received via the USB interface, parse the challenge instruction and send a challenge value obtained by parsing to the internal authentication chip, read a challenge value signature result from the internal authentication chip and store the challenge value signature result in the send cache, and return the challenge value signature result in the send cache to the Apple device via the USB interface.
 20. The apparatus according to claim 16, wherein the processor, when executing the executable instructions, is configured to: in a case that the send cache being cleared is detected, convert the key-value data into key-pressing information, generate an attaching report command according to the key-pressing information and store the attaching report command in the send cache. 